home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_kdelibs.idb / usr / freeware / kde / include / kkeydata.h.z / kkeydata.h
Encoding:
C/C++ Source or Header  |  1999-01-26  |  5.1 KB  |  215 lines

  1. /* This file is part of the KDE libraries
  2.     Copyright (C) 1997 Nicolas Hadacek <hadacek@via.ecp.fr>
  3.  
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.  
  9.     This library is distributed in the hope that it will be useful,
  10.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.     Library General Public License for more details.
  13.  
  14.     You should have received a copy of the GNU General Public License
  15.     along with this library; see the file COPYING.  If not, write to
  16.     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  17.     Boston, MA 02111-1307, USA.
  18. */
  19. #ifndef KKEYDATA_H
  20. #define KKEYDATA_H
  21.  
  22. #include <qdict.h>
  23. #include <qaccel.h>
  24.  
  25. #include <qdialog.h>
  26. #include <qlistbox.h>
  27. #include <qlabel.h>
  28. #include <qpushbt.h>
  29. #include <qchkbox.h>
  30. #include <qlined.h>
  31. #include <qtablevw.h>
  32. #include <qstrlist.h>
  33. #include <qpopmenu.h>
  34. #include <qgrpbox.h>
  35. #include <qobject.h>
  36.  
  37. #include <kapp.h>
  38.  
  39.  
  40. struct KKeyConnectEntry {
  41.     QObject* pReceiver;
  42.     QString sMember;
  43. };
  44.  
  45. struct KKeyEntry {
  46.     uint aCurrentKeyCode, aDefaultKeyCode, aConfigKeyCode;
  47.               // configKeyCode is used when configuring via configureKeys()
  48.     bool bConfigurable;
  49.     int aAccelId;
  50.     QDict<KKeyConnectEntry> *pConnectDict;
  51. };
  52.  
  53. /**
  54. *  A function/accelerator pair, used internally by KKeyConfig.
  55. *
  56. * @short A function/accelerator pair, used internally by KKeyConfig.
  57. * @version $Id: kkeydata.h,v 1.7 1998/06/16 06:03:25 kalle Exp $
  58. */
  59. class KKeyWidgetEntry : public QObject
  60. {
  61.  Q_OBJECT
  62.     
  63.  public:
  64.     KKeyWidgetEntry( QWidget *widget, const QString& widgetName );
  65.     ~KKeyWidgetEntry();
  66.     void createItem( int accelId, uint keyCode, QObject *receiver, 
  67.                      const char *member );
  68.     void setItemEnabled( int accelId, bool activate );
  69.     void deleteItem( int accelId, QObject *receiver, 
  70.                      const char *member );
  71.     bool isItemEnabled( int accelId );
  72.     
  73.  private:
  74.     QString sWidgetName;
  75.     QWidget *pWidget;
  76.     QAccel *pAccel;
  77.     
  78.  protected slots:
  79.     void widgetDestroyed();
  80.  
  81. private:
  82.   // Disallow assignment and copy-construction
  83.   KKeyWidgetEntry( const KKeyWidgetEntry& ) {};
  84.   KKeyWidgetEntry& operator= ( const KKeyWidgetEntry& ) { return *this; }
  85. };
  86.  
  87. /**
  88. * A list box item for SplitList.It uses two columns to display 
  89. * action/key combination pairs.
  90. * @short A list box item for SplitList.
  91. */
  92. class SplitListItem : public QObject, public QListBoxItem
  93. {
  94.     Q_OBJECT
  95.     
  96. public:
  97.     SplitListItem( const char *s );
  98.  
  99. protected:
  100.     virtual void paint( QPainter * );
  101.     virtual int height( const QListBox * ) const;
  102.     virtual int width( const QListBox * ) const;
  103.  
  104. public slots:
  105.     void setWidth( int newWidth );
  106.     
  107. private:
  108.     int halfWidth;
  109.     QString keyName;
  110.     QString actionName;
  111. };
  112.  
  113. /**
  114. * A list box that can report its width to the items it
  115. * contains. Thus it can be used for multi column lists etc.
  116. * @short A list box capable of multi-columns
  117. */
  118. class SplitList: public QListBox
  119. {
  120.     Q_OBJECT
  121.  
  122. public:
  123.     SplitList( QWidget *parent = 0, const char *name = 0 );
  124.     ~SplitList() { }
  125.  
  126. signals:
  127.     void newWidth( int newWidth );
  128.     
  129. protected:
  130.     void resizeEvent( QResizeEvent * );
  131.     void paletteChange ( const QPalette & oldPalette );
  132.     void styleChange ( GUIStyle );
  133.  
  134. private:
  135.     QColor selectColor;
  136.     QColor selectTextColor;
  137. };
  138.  
  139. /**
  140. * A push button that looks like a keyboard key.
  141. * @short A push button that looks like a keyboard key.
  142. */
  143. class KeyButton: public QPushButton
  144. {
  145.     Q_OBJECT
  146.  
  147. public:
  148.     KeyButton( const char* name = 0, QWidget *parent = 0);
  149.     ~KeyButton();
  150.     void setText( QString text );
  151.     void setEdit( bool edit );
  152.     bool editing;
  153.   
  154. protected:
  155.     void paint( QPainter *_painter );
  156.     void drawButton( QPainter *p ) { paint( p ); }
  157. };
  158.  
  159. /**
  160. * A widget for configuration of function/accelerator assignments.
  161. * @short A widget for configuration of function/accelerator assignments.
  162. * @version $Id: kkeydata.h,v 1.7 1998/06/16 06:03:25 kalle Exp $
  163. */
  164. class KKeyConfigure : public QDialog
  165. {
  166.  Q_OBJECT
  167.     
  168.  public:
  169.     KKeyConfigure( QDictIterator<KKeyEntry> *aKeyIt, QWidget *parent=0 );
  170.     ~KKeyConfigure();
  171.     
  172.  private slots:
  173.     void toChange(int index);
  174.     void allDefault();
  175.     void changeKey();
  176.     void defaultKey();
  177.     void shiftClicked();
  178.     void ctrlClicked();
  179.     void altClicked();
  180.     void editKey();
  181.     void editEnd();
  182.     
  183.  protected:
  184.     void keyPressEvent( QKeyEvent *e );
  185.     void fontChange( const QFont & ); 
  186.     
  187.  private:
  188.     QDictIterator<KKeyEntry> *aIt;
  189.     KKeyEntry *pEntry;
  190.     QString sEntryKey;
  191.     SplitList *wList;
  192.     QLabel *lInfo, *lNotConfig;
  193.     QLabel *actLabel, *keyLabel;
  194.     QPushButton *bAllDefault, *bDefault, *bOk, *bCancel, *bHelp;
  195.     KeyButton *bChange;
  196.     QCheckBox *cShift, *cCtrl, *cAlt;
  197.     QGroupBox *fCArea;
  198.     //QLineEdit *eKey;
  199.     
  200.     bool bKeyIntercept;
  201.     
  202.     const QString item( uint keyCode, const QString& entryKey );
  203.     bool isKeyPresent();
  204.     void setKey( uint kCode );
  205.  
  206. private:
  207.   // Disallow assignment and copy-construction
  208.   KKeyConfigure( const KKeyConfigure& ) {};
  209.   KKeyConfigure& operator= ( const KKeyConfigure& ) { return *this; }
  210. };
  211.  
  212.  
  213.  
  214. #endif
  215.